package com.fleet.project01.utils;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.os.Build;

import com.fleet.project01.App;

/**
 * 网络工具类，用于检查网络连接状态
 * 需要在AndroidManifest.xml中添加网络状态权限:
 * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 */
public class NetworkUtils {
    /**
     * 检查网络是否连接（包括WiFi、移动数据、以太网等）
     * @return 网络是否可用
     */
    public static boolean isNetworkConnected() {
        // 获取连接管理器
        ConnectivityManager connectivityManager = (ConnectivityManager)
                App.getInstance().getSystemService(Context.CONNECTIVITY_SERVICE);

        // 如果连接管理器为空，直接返回网络不可用
        if (connectivityManager == null) {
            return false;
        }

        // Android 6.0 (API 23)及以上版本使用新API
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            // 获取当前活动网络
            Network network = connectivityManager.getActiveNetwork();
            if (network == null) {
                return false;
            }

            // 获取网络能力
            NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
            // 检查是否有可用的网络传输方式
            return capabilities != null && (
                    capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
                            capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ||
                            capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) ||
                            capabilities.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH) ||
                            capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN)
            );
        } else {
            // 旧版本系统使用已过时的API（兼容处理）
            @SuppressWarnings("deprecation")
            android.net.NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
            return networkInfo != null && networkInfo.isConnected();
        }
    }
}